The code wasn't checking if parsing an image failed and just returning
success.
Testcase from bug is attached.
Fixes #4101
GtkCssImage **image = option_data;
if (_gtk_css_image_can_parse (parser))
- *image = _gtk_css_image_new_parse (parser);
+ {
+ *image = _gtk_css_image_new_parse (parser);
+ if (*image == NULL)
+ return FALSE;
+
+ return TRUE;
+ }
else if (gtk_css_color_value_can_parse (parser))
{
GtkCssValue *color;
return FALSE;
*image = _gtk_css_image_fallback_new_for_color (color);
- }
- else
- return FALSE;
- return TRUE;
+ return TRUE;
+ }
+
+ return FALSE;
}
static guint
--- /dev/null
+a {
+ background: cross-fade(8% -gtk-icontheme("system-run-symbolic"), image());
+}
--- /dev/null
+cross-fade-crash-4101.css:2:74-75: error: GTK_CSS_PARSER_ERROR_SYNTAX
'comment-detection.css',
'comment-detection.ref.css',
'cross-fade-basic.css',
+ 'cross-fade-crash-4101.css',
+ 'cross-fade-crash-4101.errors',
+ 'cross-fade-crash-4101.ref.css',
'css-21-malformed-declarations.css',
'css-21-malformed-declarations.errors',
'css-21-malformed-declarations.ref.css',